package com.jiashihui.schema_lgorithm.schema.template_method;

/**
 * @author jiashihui
 * @describe: 模板方法模式测试类  模板方法模式是通过父类与子类的关系进行实现的
 * @date 2019/03/14
 *
 * 一个抽象类中，有一个主方法，再定义1...n个方法，可以是抽象的，也可以是实际的方法，定义一个类，继承该抽象类，重写抽象方法，通过调用抽象类，实现对子类的调用。
 *
 * 模板方法模式的主要思想：
 * 定义一个算法流程，将一些特定步骤的具体实现、延迟到子类。使得可以在不改变算法流程的情况下，通过不同的子类、来实现“定制”流程中的特定的步骤。
 */
public class CalculatorStrategyTest {
    public static void main(String[] args) {
        String exp = "8+8";
        AbstractCalculator calculator = new Plus();
        int result = calculator.calculate(exp, "\\+");
        System.out.println(exp + " = " + result);
        exp = "16-8";
        calculator = new Minus();
        result = calculator.calculate(exp, "\\-");
        System.out.println(exp + " = " + result);
    }
}
